ClinReport包,输出高质量的临床统计报告结果
Editor's Note
学习
The following article is from R语言统计与绘图 Author 段湘杰
今天在逛R包网站时,又看到一个有意思的R包——ClinReport。
看名字,这个包跟临床报告有关系。
查了下R包介绍,这个包是专门用于统计报告的R包。
ClinReport包可以根据常见的临床报告标准,以一种容易阅读和理解的格式将R中的统计输出结果,比如说表格和图形,导出到Word文档或者R markdown文档中。
并且这种输出格式适用于所有出版物,也可以在流行病学研究或临床试验范围内使用。
看到这里,就觉得这个包好强大!!
下面来学习下这个R包。
目 录
1. 安装和加载R包
2. 加载演示数据集
3. 输出连续资料统计信息
3.1 简单描述统计信息
3.2 添加一个分组变量
3.3 添加2个分组变量
3.4 结果可视化
3.5 自定义统计函数
4. 输出分类资料统计信息
4.1 输出简单统计信息
4.2 添加一个分组变量
4.3 添加2个分组变量
5. 输出结果
1. 安装和加载R包
安装有两种方法,一种从CRAN安装;一种是从gitHub安装开发版本。
install.packages("ClinReport") # 安装包
library(ClinReport) # 加载包
# 从gitHub安装
# library(devtools)
# install_github("jfrancoiscollin/ClinReport")
我是从gitHub安装的,CRAN安装失败了。
还需要安装和加载下officer包和flextable包用于表格输出到Word文档。
install.packages("officer") # 安装包
install.packages("flextable") # 安装包
library(officer)# 加载包
library(flextable)# 加载包
2. 加载演示数据集
首先加载下演示数据集,使用datafake数据集进行演示。
data(datafake) # 加载数据集
这个数据是R包自带的虚拟数据集,有396行观测对象和8个变量。
str(datafake) # 查看数据集结构
从上面的输出结果可以看出,y_numeric、y_poisson、baseline为连续变量,其余变量为因子。
3. 输出连续资料统计信息
下面来学习这个R包怎么使用。
在这个包里面,report.quanti()函数可以输出连续变量的描述统计信息。
3.1 简单描述统计信息
先来个简单的,比如说输出datafake数据集中y_numeric变量的统计信息。
report.quanti(data=datafake,
y="y_numeric")
先指定数据集,然后将要输出的连续变量传递给y参数。
可以添加其他参数输出更复杂的结果。比如说修改变量标签,添加total列。
report.quanti(data=datafake,
y="y_numeric",
total=TRUE,
y.label="修改后的结果标签显示")
上面连续变量计算的是算术平均值,还可以计算几何平均值。
report.quanti(data=datafake,
y="y_numeric",
geomean=TRUE) # 计算几何均值
3.2 添加一个分组变量
上面的结果中,y参数只有一列,可以添加一个分组变量,输出更复杂的信息。比如说GROUP变量为三分类变量。
report.quanti(data = datafake,
y="y_numeric",
x1="GROUP") # 指定分组变量
这里同样可以添加total列,直接看结果。
3.3 添加2个分组变量
在上面的演示中,添加了一个分组变量,而且显示为列的形式,还可以在结果信息中添加一个分组变量,显示为行的形式。比如说TIMEPOINT变量为5分类变量。
report.quanti(data=datafake,
y="y_numeric",
x1="GROUP",
x2="TIMEPOINT")
这里同样可以添加total列,结果不显示了,自己运行下试试。
还可以在表头显示受试者的数目。
report.quanti(data=datafake,
y="y_numeric",
x1="GROUP",
total=TRUE,
subjid="SUBJID") # 显示受试者数目
3.4 结果可视化
除了表格显示结果,还可以使用图形来可视化结果,比如说可视化均值结果。
tab1 <- report.quanti(data=datafake,
y="y_numeric",
x1="GROUP",
x2="TIMEPOINT",
subjid="SUBJID")
tab1
gg <- plot(tab1,
title="Mean response evolution as a function of time by treatment group",
legend.label="Treatment groups",
ylab="Y mean")
gg
3.5 自定义统计函数
除了上面这些输出信息外,还可以自定义统计函数,输出自己想要的结果。
mystat=function(x) quantile(x,0.99,na.rm=TRUE)
tab <- report.quanti(data=datafake,
y="y_numeric",
x1="GROUP",
x2="TIMEPOINT",
total=TRUE,subjid="SUBJID",
func.stat=mystat,
func.stat.name="99% quantile")
tab
mystat2=function(x) mean(x,na.rm=TRUE)/sd(x,na.rm=TRUE)
tab=report.quanti(data=datafake,
y="y_numeric",
x1="GROUP",
total=TRUE,
subjid="SUBJID",
func.stat=mystat2,
func.stat.name="Coefficient of variation")
tab
连续变量的结果输出就学到这里,更详细的可以自行查阅R包。
4. 输出分类资料统计信息
在这个包里面,report.quali()函数可以输出分类变量的描述统计信息。
4.1 输出简单统计信息
如下所示,直接将分类变量传递给y参数即可输出统计结果。
report.quali(data=datafake,
y="y_logistic")
可以添加参数修改输出结果,比如说修改分别变量标签。
report.quali(data=datafake,
y="y_logistic",
y.label="Clinical cure",
y.levels.label="Levels")
4.2 添加一个分组变量
上面的结果中,y参数只有一列,可以添加一个分组变量,输出更复杂的信息。比如说GROUP变量为三分类变量。
report.quali(data=datafake,
y="y_logistic",
x1="GROUP",
y.levels.label="Clinical cure")
4.3 添加2个分组变量
在上面的演示中,添加了一个分组变量,而且显示为列的形式,还可以在结果信息中添加一个分组变量,显示为行的形式。比如说TIMEPOINT变量为5分类变量。
report.quali(data=datafake,y="y_logistic",
x1="GROUP",
x2="TIMEPOINT",
y.levels.label="Clinical cure",
x2.label="Days",
at.row="Days")
在上面的结果,显示的百分比结果是列百分比,可以调整参数,显示行百分比结果。
report.quali(data=datafake,
y="y_logistic",
x1="GROUP",
x2="TIMEPOINT",
percent.col=FALSE,
x2.label="Days",
y.levels.label="Clinical cure")
同样可以添加参数subjid="SUBJID"显示受试者数目,并且调整输出结果数字位数为1位。
report.quali(data=datafake,y="y_logistic",x1="GROUP",
x2="TIMEPOINT",at.row="TIMEPOINT",
subjid="SUBJID",
round=1) # 设置小数位数位1位
分类变量的结果输出就学到这里,更详细的可以自行查阅R包。
5. 输出结果
在前面讲了,这个包可以根据常见的临床报告标准,以一种容易阅读和理解的格式将R中的统计输出结果,比如说表格和图形,导出到Word文档或者R markdown文档中。
下面来学习下怎么导出表格到Word里面。
# 创建一个空的word文档
doc <- read_docx()
# 将表格添加到word里面
doc <- report.doc(tab1,
title="演示示例表格",
doc = doc)
# 设置输出路径和输出表格文件的名称
file <- paste("C://Rdata//输出表格", ".docx",sep="")
# 输出表格
print(doc, target =file)
显示的样式如上图所示,显示结果样式还是可以的。
参考资料
ClinReport包帮助资料